
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

<HEAD>
   <TITLE>twovec_c</TITLE>
</HEAD>

<BODY style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<A name="TOP"></A>

<table style="text-align: left; margin-left: auto; margin-right: auto; width: 800px;"
 border="0" cellpadding="5" cellspacing="2">
  <tbody>
    <tr>
      <td style="background-color: rgb(153, 153, 153); vertical-align: middle; text-align: center;">
      <div align="right"> 
      <small><small><a href="index.html">Index Page</a></small></small>
      </div>
      <b>twovec_c</b> </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">

<small><div align="center">
<A HREF="index.html#A">A</A>&nbsp;
<A HREF="index.html#B">B</A>&nbsp;
<A HREF="index.html#C">C</A>&nbsp;
<A HREF="index.html#D">D</A>&nbsp;
<A HREF="index.html#E">E</A>&nbsp;
<A HREF="index.html#F">F</A>&nbsp;
<A HREF="index.html#G">G</A>&nbsp;
<A HREF="index.html#H">H</A>&nbsp;
<A HREF="index.html#I">I</A>&nbsp;
<A HREF="index.html#J">J</A>&nbsp;
<A HREF="index.html#K">K</A>&nbsp;
<A HREF="index.html#L">L</A>&nbsp;
<A HREF="index.html#M">M</A>&nbsp;
<A HREF="index.html#N">N</A>&nbsp;
<A HREF="index.html#O">O</A>&nbsp;
<A HREF="index.html#P">P</A>&nbsp;
<A HREF="index.html#Q">Q</A>&nbsp;
<A HREF="index.html#R">R</A>&nbsp;
<A HREF="index.html#S">S</A>&nbsp;
<A HREF="index.html#T">T</A>&nbsp;
<A HREF="index.html#U">U</A>&nbsp;
<A HREF="index.html#V">V</A>&nbsp;
<A HREF="index.html#W">W</A>&nbsp;
<A HREF="index.html#X">X</A>&nbsp;
</div></small>
       <br>
       <table style="text-align: left; width: 60%; margin-left: auto; margin-right: auto;"
       border="0" cellspacing="2" cellpadding="2">
        <tbody>
          <tr>
            <td style="width: 50%; text-align: center;">
            <small>
              <a href="#Procedure">Procedure<br></a>
              <a href="#Abstract">Abstract<br></a>
              <a href="#Required_Reading">Required_Reading<br></a>
              <a href="#Keywords">Keywords<br></a>
              <a href="#Brief_I/O">Brief_I/O<br></a>
              <a href="#Detailed_Input">Detailed_Input<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Detailed_Output">Detailed_Output<br></a>
              <a href="#Parameters">Parameters<br></a>
              <a href="#Exceptions">Exceptions<br></a>
              <a href="#Files">Files<br></a>
              <a href="#Particulars">Particulars<br></a>
              <a href="#Examples">Examples<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Restrictions">Restrictions<br></a>
              <a href="#Literature_References">Literature_References<br></a>
              <a href="#Author_and_Institution">Author_and_Institution<br></a>
              <a href="#Version">Version<br></a>
              <a href="#Index_Entries">Index_Entries<br></a>
             </small>
            </td>
          </tr>
        </tbody>
</table>

<h4><a name="Procedure">Procedure</a></h4>
<PRE>
   void twovec_c ( ConstSpiceDouble    axdef  [3],
                   SpiceInt            indexa,
                   ConstSpiceDouble    plndef [3],
                   SpiceInt            indexp,
                   SpiceDouble         mout   [3][3] ) 
</PRE>
<h4><a name="Abstract">Abstract</a></h4>
<PRE>
 
    Find the transformation to the right-handed frame having a 
    given vector as a specified axis and having a second given 
    vector lying in a specified coordinate plane. 
 </PRE>
<h4><a name="Required_Reading">Required_Reading</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Keywords">Keywords</a></h4>
<PRE>
 
    AXES,  FRAME,  ROTATION,  TRANSFORMATION 
 

</PRE>
<h4><a name="Brief_I/O">Brief_I/O</a></h4>
<PRE>
 
    VARIABLE  I/O  DESCRIPTION 
    --------  ---  ------------------------------------------------- 
    axdef      I   Vector defining a principal axis. 
    indexa     I   Principal axis number of axdef (X=1, Y=2, Z=3). 
    plndef     I   Vector defining (with axdef) a principal plane. 
    indexp     I   Second axis number (with indexa) of principal 
                   plane. 
    mout       O   Output rotation matrix. 
 </PRE>
<h4><a name="Detailed_Input">Detailed_Input</a></h4>
<PRE>
 
    axdef      is a vector defining one of the principal axes of a 
               coordinate frame. 
 
    indexa     is a number that determines which of the three 
               coordinate axes contains axdef. 
 
               If indexa is 1 then axdef defines the X axis of the 
               coordinate frame. 
 
               If indexa is 2 then axdef defines the Y axis of the 
               coordinate frame. 
 
               If indexa is 3 then axdef defines the Z axis of the 
               coordinate frame 
 
    plndef     is a vector defining (with axdef) a principal plane of 
               the coordinate frame. 
 
    indexp     is the second axis of the principal frame determined 
               by axdef and plndef. 
 
               If indexp is 1, the second axis of the principal 
               plane is the X-axis. 
 
               If indexp is 2, the second axis of the principal
               plane is the Y-axis. 
 
               If indexp is 3, the second axis of the principal plane 
               is the Z-axis. 
 </PRE>
<h4><a name="Detailed_Output">Detailed_Output</a></h4>
<PRE>
 
    mout       is a rotation matrix that transforms coordinates given 
               in the input frame to the frame determined by axdef, 
               plndef, indexa and indexp. 
 </PRE>
<h4><a name="Parameters">Parameters</a></h4>
<PRE>
 
    None. 
 </PRE>
<h4><a name="Exceptions">Exceptions</a></h4>
<PRE>
 
   1) If indexa or indexp is not in the set {1,2,3} the error 
      SPICE(BADINDEX) will be signalled. 
 
   2) If indexa and indexp are the same the error 
      SPICE(UNDEFINEDFRAME) will be signalled. 
 
   3) If the cross product of the vectors axdef and plndef is zero, 
      the error SPICE(DEPENDENTVECTORS) will be signalled. 
 </PRE>
<h4><a name="Files">Files</a></h4>
<PRE>
 
    None. 
 </PRE>
<h4><a name="Particulars">Particulars</a></h4>
<PRE>
 
    Given two linearly independent vectors there is a unique 
    right-handed coordinate frame having: 
 
       1) axdef lying along the indexa axis. 
 
       2) plndef lying in the indexa-indexp coordinate plane. 
 
    This routine determines the transformation matrix that transforms 
    from coordinates used to represent the input vectors to the 
    the system determined by axdef and plndef.  Thus a vector 
    (x,y,z) in the input coordinate system will have coordinates 
 
                             t 
               mout * (x,y,z) 
 
    in the frame determined by axdef and plndef. 
 </PRE>
<h4><a name="Examples">Examples</a></h4>
<PRE>
 
    The rotation matrix ticc from inertial to Sun-Canopus 
    (celestial) coordinates is found by the call 
 
       <b>twovec_c</b> ( Sun_vector, 3, Canopus_vector, 1, ticc ); 
 
 </PRE>
<h4><a name="Restrictions">Restrictions</a></h4>
<PRE>
 
    indexa, indexp must be different and be integers from 1 to 3. 
 
    axdef and plndef must be linearly independent. 
 </PRE>
<h4><a name="Literature_References">Literature_References</a></h4>
<PRE>
 
    None. 
 </PRE>
<h4><a name="Author_and_Institution">Author_and_Institution</a></h4>
<PRE>
 
    W.M. Owen       (JPL) 
    W.L. Taber      (JPL) 
 </PRE>
<h4><a name="Version">Version</a></h4>
<PRE>
 
   -CSPICE Version 1.1.0, 22-OCT-1998 (NJB)

      Made input matrices const.

   -CSPICE Version 1.0.0, 2-MAR-1998
</PRE>
<h4><a name="Index_Entries">Index_Entries</a></h4>
<PRE>
 
   define an orthonormal frame from two vectors 
 </PRE>
<h4>Link to routine twovec_c source file <a href='../../../src/cspice/twovec_c.c'>twovec_c.c</a> </h4>

      </td>
    </tr>
  </tbody>
</table>

   <pre>Wed Jun  9 13:05:31 2010</pre>

</body>
</html>

